前言:大家好,今天鐵人賽已經邁向第五天了,我發現每天最累的竟然是想標題?(早說,為什麼不早說?)
Singleton 全名為單身痛(喂,發音根本不像),在 iOS 開發中算是蠻普遍的一種設計模式
Singleton 在 iOS 中有著以下的特性:
- 只初始化你的 classs 壹次
- 他是靜態屬性(static)
- 他全局(global)共享你的 class instance
- 此外還可以節省記憶體的用量
一句話來說就是:壹靜全局,就能掌握先機,不戰即屈人之兵,實乃寫程式最高境界。
你信了嗎?反正我是信了
- 而在蘋果爸爸所設計的 API 中,有哪些是用到了 Singleton 的設計模式呢?
- 我們舉幾個例子來說:
- 你想要對 Document 進行操作:那你可能會接觸 FileManager.default
- 你想要在 iOS 中暫存一些不是敏感的資料: 那你可能會接觸 UserDefaults.standard
- 在做網路請求的時候:URLSession.shared.dataTask
由此可見,把把自己就很愛使用 Singleton 這個設計模式,但是俗説說:有一好,無兩好。
如果你過度濫用,你將會很難管理 Singleton class 的生命週期,可能會導致寫到最後你不知道他作用在哪些範圍。
舉個例子在我的 gist 上,歡迎大家前去收看:
https://gist.github.com/aa08666/d28f43a6d2269728c1720f7bfa1d816e